package model

import (
	"time"

	"gorm.io/gorm"
)

// TaskModel 任务数据库模型（映射tasks表）
type TaskModel struct {
	// 关键修正：SQLite自增主键必须是 INTEGER 类型 + autoIncrement:true
	ID             int64          `gorm:"primaryKey;column:id;type:INTEGER"`
	Name           string         `gorm:"column:name;type:varchar(128);not null;uniqueIndex"` // 任务名称（唯一）
	TaskType       int32          `gorm:"column:task_type;type:int;not null"`                 // 任务类型
	ProbeType      int32          `gorm:"column:probe_type;type:int;not null"`                // 探测类型
	ProbeTarget    string         `gorm:"column:probe_target;type:varchar(255);not null"`     // 探测目标（唯一）
	ProbeTimeout   int32          `gorm:"column:probe_timeout;type:int;not null;default:3"`   // 探测超时（秒）
	CronExpression string         `gorm:"column:cron_expression;type:varchar(64);default:''"` // cron表达式
	Interval       int32          `gorm:"column:interval;type:int;default:0"`                 // 循环间隔（秒）
	StartTime      int64          `gorm:"column:start_time;type:bigint;default:0"`            // 周期开始时间戳
	EndTime        int64          `gorm:"column:end_time;type:bigint;default:0"`              // 周期结束时间戳
	Status         int32          `gorm:"column:status;type:int;not null;default:0;index"`    // 任务状态
	CreatedAt      time.Time      `gorm:"column:created_at;autoCreateTime;index"`             // 创建时间
	UpdatedAt      time.Time      `gorm:"column:updated_at;autoUpdateTime;index"`             // 更新时间
	DeletedAt      gorm.DeletedAt `gorm:"column:deleted_at;index"`                            // 软删除标记
}

// TableName 自定义表名
func (m *TaskModel) TableName() string {
	return "tasks"
}
